package linker

// Chunker 相关操作的接口
// 未实现的话就是默认也就是空
// Chunk 相当于一个基类 没有太多实际含义
type Chunker interface {
	GetName() string                  //获取名字
	GetSectionHeader() *SectionHeader //获取 SectionHeader
	UpdateSectionHeader(ctx *Context) //更新 SectionHeader
	GetSectionHeaderIndex() int64     // 获取节头部表索引
	CopyBuf(ctx *Context)             // 拷贝自身信息或资源到 Context.Buf 中
}

// Chunk 和其他结构配合使用
// 没有太大实际含义
type Chunk struct {
	Name               string
	SectionHeader      SectionHeader
	SectionHeaderIndex int64
}

func NewChunk() Chunk {
	return Chunk{SectionHeader: SectionHeader{AddrAlign: 1}}
}

func (c *Chunk) GetSectionHeader() *SectionHeader {
	return &c.SectionHeader
}

func (c *Chunk) CopyBuf(ctx *Context) {

}

func (c *Chunk) GetName() string {
	return c.Name
}

func (c *Chunk) UpdateSectionHeader(ctx *Context) {

}

func (c *Chunk) GetSectionHeaderIndex() int64 {
	return c.SectionHeaderIndex
}
